﻿<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">

    <xsl:param name="fo-page-number.square.width">40</xsl:param>

    <xsl:template name="fo-page-number.square">
        <xsl:param name="background-color"/>
        <xsl:param name="square-size" select="concat($fo-page-number.square.width,'px')"/>
        <xsl:element name="fo:block-container">
            <xsl:attribute name="border-style">none</xsl:attribute>
            <xsl:attribute name="background-color">
                <xsl:value-of select="$background-color"/>
            </xsl:attribute>
            <xsl:attribute name="width">
                <xsl:value-of select="$square-size"/>
            </xsl:attribute>
            <xsl:attribute name="height">
                <xsl:value-of select="$square-size"/>
            </xsl:attribute>
            <xsl:element name="fo:block">
                <xsl:attribute name="line-height">
                    <xsl:value-of select="$square-size"/>
                </xsl:attribute>
                <xsl:attribute name="start-indent">0pt</xsl:attribute>
                <xsl:attribute name="end-indent">0pt</xsl:attribute>
                <xsl:attribute name="font-size">1em</xsl:attribute>
                <xsl:attribute name="text-align">center</xsl:attribute>
                <xsl:attribute name="color">white</xsl:attribute>
                <xsl:attribute name="font-family">
                    <xsl:value-of select="$title.font.family"/>
                </xsl:attribute>
                <fo:page-number/>
            </xsl:element>
        </xsl:element>
    </xsl:template>

    <xsl:template name="custom.footer.content">
        <xsl:param name="contents"/>
        <xsl:param name="image"/>
        <xsl:param name="align"/>
        <xsl:param name="text-indent"/>
        <xsl:element name="fo:block">
            <xsl:element name="fo:block">
                <xsl:element name="fo:external-graphic">
                    <xsl:attribute name="src">
                        <xsl:text>url('</xsl:text>
                        <xsl:value-of select="$image"/>
                        <xsl:text>')</xsl:text>
                    </xsl:attribute>
                    <xsl:attribute name="width">100%</xsl:attribute>
                    <xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
                </xsl:element>
            </xsl:element>
            <xsl:element name="fo:block-container">
                <xsl:attribute name="absolute-position">absolute</xsl:attribute>
                <xsl:attribute name="width">100%</xsl:attribute>
                <xsl:attribute name="text-align">
                    <xsl:value-of select="$align"/>
                </xsl:attribute>
                <xsl:attribute name="{$align}">
                    <xsl:value-of select="$text-indent"/>
                </xsl:attribute>
                <xsl:attribute name="bottom">
                    <xsl:text>0.3em</xsl:text>
                </xsl:attribute>
                <xsl:element name="fo:block">
                    <xsl:attribute name="font-size">
                        <xsl:text>0.8em</xsl:text>
                    </xsl:attribute>
                    <xsl:element name="fo:block">
                        <xsl:attribute name="color">
                            <xsl:value-of select="$title.font.color"/>
                        </xsl:attribute>
                        <xsl:attribute name="font-family">
                            <xsl:value-of select="$title.font.family"/>
                        </xsl:attribute>
                        <xsl:value-of select="$doc.info"/>
                    </xsl:element>
                    <xsl:element name="fo:block">
                        <xsl:attribute name="font-style">italic</xsl:attribute>
                        <xsl:value-of select="$doc.releaseinfo"/>
                    </xsl:element>
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template>

    <xsl:template name="custom.header.content">
        <xsl:param name="border-width">2</xsl:param>
        <xsl:param name="align"/>
        <xsl:param name="contents"/>
        <xsl:element name="fo:block">
            <xsl:attribute name="line-height">
                <xsl:value-of select="concat($fo-page-number.square.width - $border-width,'px')"/>
            </xsl:attribute>
            <xsl:attribute name="font-size">1em</xsl:attribute>
            <xsl:attribute name="color">gray</xsl:attribute>
            <xsl:attribute name="font-family">
                <xsl:value-of select="$title.font.family"/>
            </xsl:attribute>
            <xsl:attribute name="text-align">
                <xsl:value-of select="$align"/>
            </xsl:attribute>
            <xsl:attribute name="border-bottom-color">
                <xsl:value-of select="$title.font.color"/>
            </xsl:attribute>
            <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
            <xsl:attribute name="border-bottom-width">
                <xsl:value-of select="concat($border-width,'px')"/>
            </xsl:attribute>
            <xsl:copy-of select="$contents"/>
        </xsl:element>
    </xsl:template>

    <xsl:template name="custom.header.empty">
        <xsl:param name="border-width">2</xsl:param>
        <xsl:element name="fo:block">
            <xsl:attribute name="line-height">
                <xsl:value-of select="concat($fo-page-number.square.width - $border-width,'px')"/>
            </xsl:attribute>
            <xsl:attribute name="border-bottom-color">
                <xsl:value-of select="$title.font.color"/>
            </xsl:attribute>
            <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
            <xsl:attribute name="border-bottom-width">
                <xsl:value-of select="concat($border-width,'px')"/>
            </xsl:attribute>
            <fo:inline>
                <xsl:text disable-output-escaping="yes">&#xa0;</xsl:text>
                <xsl:comment>Border-Bottom Only</xsl:comment>
            </fo:inline>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>
